Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/__init__.py e0f1f99cd1c208c5008a936230c38e448dddd45d (e0f1f99c) Text, 1.06 KB

T8b949e# SPDX-License-Identifier: MIT

Tff7b72import T7ee787sys

T8b949e# NOTE: this class is required to be able to use print/log commands and have them flush to stdout and stderr immediately
T8b949e# without wrapper stdout and stderr, when using childProcess.stdout.on(data) in NodeJS script, we never get
T8b949e# any events fired until the process exits. However, force flushing the streams does fire the callbacks in NodeJS.


T8b949e# this class forces stream writes to be flushed immediately
Tff7b72class T56d364ImmediateFlushingStreamWrapperTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3streamTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstream Tff7b72= Te6edf3stream

T8b949e# force write to flush immediately
Tff7b72def Td2a8ffwriteTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstreamTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3dataTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffstreamTff7b72.Td2a8ffflushTb4b4b4(Tb4b4b4)

T8b949e# force writelines to flush immediately
Tff7b72def Td2a8ffwritelinesTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3linesTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstreamTff7b72.Td2a8ffwritelinesTb4b4b4(Te6edf3linesTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffstreamTff7b72.Td2a8ffflushTb4b4b4(Tb4b4b4)

Tff7b72def Tff7b72__getattr__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3attrTb4b4b4)Tb4b4b4:
Tff7b72return Tffa657getattrTb4b4b4(Tff7b72selfTff7b72.Td2a8ffstreamTb4b4b4, Te6edf3attrTb4b4b4)


T8b949e# wrap stdout and stderr with our custom wrapper
Te6edf3sysTff7b72.Td2a8ffstdout Tff7b72= Te6edf3ImmediateFlushingStreamWrapperTb4b4b4(Te6edf3sysTff7b72.Td2a8ffstdoutTb4b4b4)
Te6edf3sysTff7b72.Td2a8ffstderr Tff7b72= Te6edf3ImmediateFlushingStreamWrapperTb4b4b4(Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────